﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AccesoDatos;
using AccesoDatos.Manejador;
using AccesoDatos.Objetos;

namespace RMA
{
    public partial class frmEmbarque : Form
    {
        public int _suc;
        public string _User;
        string FolioEmbarque;
        DataTable FoliosAu;
        DataRowView Vista;
        Manejador_Autorizacion Manejador = new Manejador_Autorizacion();
        Manejador_Embarque manEm = new Manejador_Embarque();
        clsEmbarques objEm = new clsEmbarques();

        public frmEmbarque(int Suc,string User)
        {
            InitializeComponent();
            _suc = Suc;
            _User = User;
        }

        private void txtCajas_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtRastreo_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void frmEmbarque_Load(object sender, EventArgs e)
        {
            CargarPaqueteria();
            CargarSucurasles();
            CargarOrdenes(_User, _suc);
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void CargarSucurasles() 
        {
            cbSucursal.DataSource = Manejador.RegresaSucursales();
            cbSucursal.DisplayMember = "nombre";
            cbSucursal.ValueMember = "SucId";
        }

        private void CargarPaqueteria() 
        {
            cbPaqueteria.DataSource = Manejador.RegresaPaqueteria();
            cbPaqueteria.DisplayMember = "nombre";
            cbPaqueteria.ValueMember = "nombre";
        }
        
        private void CargarOrdenes (string User,int Suc)
        {
            FoliosAu = manEm.GetFolioAutorizados(User, Suc);
            listAutorizadas.DataSource = FoliosAu;
            listAutorizadas.DisplayMember = "Folio";
            listAutorizadas.ValueMember = "Folio";
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            Vista = listAutorizadas.SelectedItem as DataRowView;
            if (null == Vista)
            {
                return;
            }
            listEmbarque.Items.Add(listAutorizadas.SelectedValue.ToString());
            FoliosAu.Rows.Remove(Vista.Row);
            listAutorizadas.DataSource = FoliosAu;
        }

        private void btnQuitar_Click(object sender, EventArgs e)
        {
            if (listEmbarque.SelectedItem != null)
            {
                FoliosAu.Rows.Add(listEmbarque.SelectedItem);
                listEmbarque.Items.Remove(listEmbarque.SelectedItem);
                listAutorizadas.DataSource = FoliosAu;
            }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (txtNumero.Text == "" || txtNumero.Text == null)
            {
                MessageBox.Show("Ingrese Numero de Guìa", "Alerta");
                return;
            }
            if (txtRastreo.Text == "" || txtRastreo.Text == null)
            {
                MessageBox.Show("Ingrese Numero de Rastreo", "Alerta");
                return;
            }
            if (listEmbarque.Items.Count == 0)
            {
                MessageBox.Show("Introduzca Folio para Embarque", "Alerta");
                return;
            }
            try
            {
                LlenarDatos();
                FolioEmbarque = manEm.Add_GetEmbarque(objEm);
                foreach (string I in listEmbarque.Items)
                {
                    manEm.Add_GetEmbarqueDetalles(FolioEmbarque, I, "0");
                }

                System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadProc));
                t.Start();
                this.Close();
            }
            catch
            {

            }

        }

        public void ThreadProc()
        {
            Application.Run(new frmCorreo(FolioEmbarque));
        }

        private void LlenarDatos() 
        {
            objEm.NumeroGuia = txtNumero.Text;
            objEm.Fecha = dtpFechaLlegada.Value.ToShortDateString();
            objEm.Paqueteria = cbPaqueteria.SelectedValue.ToString();
            objEm.Sucursal = cbSucursal.SelectedValue.ToString();
            objEm.Rastreo = txtRastreo.Text;
            objEm.Cajas = txtCajas.Text;
            objEm.Observaciones = txtObservaciones.Text;
        }
    }
}
